#include <QtGui>
#include <QtSql>

#include "DlgKategorie.h"
#include "Datenverwaltung.h"

DlgKategorie::DlgKategorie(QWidget *eltern ,  Datenverwaltung *verwaltung) :  QDialog(eltern)
{
  K_Verwaltung=verwaltung;
  setupUi(this);
  K_Verwaltung->KategorieModell();
  tabKategorien->setModel(K_Verwaltung->KategorieModell());
  tabKategorien->hideColumn(0);
  connect(K_Verwaltung,SIGNAL(Fehler(QString)),this,SLOT(Fehler(QString)));
  connect(K_Verwaltung,SIGNAL(Warnung(QString)),this,SLOT(Meldung(QString)));
  if(K_Verwaltung->KategorieModell()->rowCount()<1)
    sfLoeschen->setEnabled(false);
}
void DlgKategorie::changeEvent(QEvent *e)
{
  QDialog::changeEvent(e);
  switch (e->type())
  {
    case QEvent::LanguageChange:
				  retranslateUi(this);
				  break;
				  default:
				  break;
  }
}
void DlgKategorie::on_sfEinfuegen_clicked()
{
  if(txtNeu->text().isEmpty())
  {
    QMessageBox::warning(this,tr("Fehlerhafte Eingabe"),tr("Die Kategorie darf nicht leer sein."));
    return;
  }
  K_Verwaltung->KategorieAnlegen(txtNeu->text());
  if(tabKategorien->model()->rowCount()>0)
    sfLoeschen->setEnabled(true);
  txtNeu->setText(QString());
}
void DlgKategorie::Fehler(const QString &meldung)
{
  QMessageBox::critical(this,tr("Fehler"),tr("Die Kategorie %1 konnte nicht angelegt werden.\n%2").arg(txtNeu->text()).arg(meldung));
}
void DlgKategorie::Meldung(const QString &meldung)
{
  QMessageBox::warning(this,tr("Warnung"),meldung);
}

void DlgKategorie::on_sfLoeschen_clicked()
{
  QItemSelectionModel* Auswahl=tabKategorien->selectionModel();
  if(!Auswahl->hasSelection())
  {
    QMessageBox::warning(this,tr("Fehler"),trUtf8("Es wurde nichts zum Löschen ausgewählt."));
    return;
  }
  QModelIndexList Liste=Auswahl->selectedRows();
  foreach(QModelIndex Eintrag,Liste)
  {
    /*Nur ausblenen wenn man sie löschen konnte*/
    if(K_Verwaltung->KategorieLoeschen(Eintrag.row()))
      tabKategorien->hideRow(Eintrag.row());
  }
}
